QECon全球软件质量效能大会开幕致辞:大道至简、质效合一 (附PPT)
第一届 QECon 软件质量与效能大会 2020年9月5日 在上海龙之梦大酒店圆满落幕。本次大会线上、线下全程参会人数超过1000人,受到软件行业的极大关注,得到了好评。这里发布的是由QECon发起人、本公众号博主朱少民老师做的大会开幕致辞。
各位领导,各位来宾,线上、线下的同仁们,大家上午好!
我今天是代表组委会做一个开幕致辞,谈一谈我们为何发起QECon——全球软件质量与效能大会,在这里我们不讲故事,也不谈筹办这个大会背后的酸甜苦辣,而是直接进入大会的主题、大家更感兴趣的主题——质量与效能,谈一谈如何解决它们之间的冲突,更好地将它们融合在一起,给企业的软件研发带来最大的价值。
今天,人工智能也经常被使用了,人脸识别、语音输入也都已经成熟起来,但是它也带来了更大的不确定性,就像深度神经网络模型,我们通过特定的数据集训练出来的模型,的确可以得到很好的结果,如同视觉识别甚至超过了人类的能力,但是它也有缺点,在处理新数据的时候它的性能有可能显著下降,或者一些带有噪声的对抗样本,容易去欺骗这样的系统,它有可能给出高可信度的错误判断。
不仅仅是系统不确定,我们现在的研发越来越不确定,大家抱怨最多的就是需求不稳定、需求模糊、需求频繁变更,这些问题在目前的环境下更突出。如果你推行敏捷,需求描述仅仅依赖用户故事来描述,没有验收标准、没有实施ATDD,这种情况下,需求是缺乏可测试性的,如果可测试性得不到保证,质量也就无法得到保证。
我们也处在一个快节奏的时代,这个时代瞬息万变,大家也知道,市场驱动业务,业务驱动研发,这样的话就进一步推动我们去推行敏捷开发,快速迭代、快速交付,因为只有做到持续交付,才能更好地去满足市场的需求、满足客户的期望,有人把持续交付看作是研发交付给运维,但我觉得持续交付应该是持续交付更有价值的东西给我们的最终用户,从这个角度讲,持续交付倒逼持续运维、持续部署、持续集成、继续测试、继续构建。
所以,我们今天面对三大挑战:复杂性、不确定性和持续性。
面对复杂性,我们一般的方法或者对策就是化繁为简,逐个击破。我们可以通过抽象的方法去抓住事物的特征进行刻画然后形成模型,像建模的方法在需求、设计和测试中有很多的应用,所以我们有需求建模、测试建模、大数据分析建模,还有人工智能训练模型等等。
举一个简单例子,Model Based testing-MBT。虽然现在MBT应用比较少,但是我们可以根据业务流、数据流或者系统的状态构建模型,依据模型生成测试用例、测试数据。我之前还经常讲,我们现在搞自动化,许多时候都是半自动化,只有建立在MBT上的自动化才是彻底的自动化,而且维护模型相对而言是更简单、更容易的。这里有第三方的机构做了调查,得到的数据是,如果采用基于模型的测试,效率可以提高40%,质量提高50%,而成本降低到原来的四分之一。
面对不确定性我们觉得要提升我们的认知,一方面我们只有深刻认识到系统有不确定性,我们才会重视不确定性;我们只有深刻理解了不确定性,我们才会真正有办法去降低这个不确定性。另一方面,我们也清楚,这个不确定性中有确定性,是不是?就像随机数据有概率分布的特征,所以我们要从随机、混沌中找到规律,像幂定律、80/20原则等,抓住关键因素,根据不同的场景来找到解决方案。
面对持续方面,我们会利用敏捷、DevOps或者精益思想,那是不是靠这些就可以解决问题呢?也不一定,还要看你的团队是不是真的具有敏捷/DevOps的价值观和技术能力,是不是踏踏实实去践行敏捷或者DevOps的优秀实践,例如TDD、ATDD、代码整洁、全自动化工具链等等,另外也要去看,是不是真正在持续改进,或者具有开放的精神去拥抱一些新的东西。为敏捷而敏捷肯定是不行的,这张图也说明了,我们真正的敏捷一定是为业务服务的,甚至可以说,如果你的敏捷不是为了业务敏捷,那就是“耍流氓”。
欲速则不达,大家做得苦,不一定能达到好的效果,这是我们经常讨论的话题。如果做得快,但做得不好,效果可能更差,我们之前做过实际的调研,基于调查的数据做出的统计,如果做得比较快,然后不重视质量的话,那你浪费的时间或者成本会占到40%以上。比如996,就是每周工作66个小时,扣掉40%的话,你每天工作的时间还是8个小时,一周还是工作40个小时,相当于回到了朝九晚五这样的状态。但是这样的话还不如实施朝九晚五的效果,为什么?因为你如果天天做得很辛苦,是长期处在一个疲劳的状态,你的效率会更低,如果是朝九晚五工作制,精力更充沛,工作会干得更好。我们也会讲做得快、质量就会差一点,但倒过来就不一样,我们一次性把事情做对,质量也高,效率也高,鱼和熊掌兼得。
现在,大家都重视创新和效率,这几年特别明显,创新能决定我们飞得有多高,但品质能决定我们走多远,所以质量在任何时候都是重要的,不容我们忽视。
这里举一个例子,这个礼拜一,ZOOM的股票大涨47%,大家会说,这是疫情推动了股票的上涨,推动了ZOOM,的确有疫情带来的红利,我们不排除这个疫情带来的作用,但是在远程会议或者协作的市场上,ZOOM有很多的竞争对手,或者说有很强的竞争对手,像Cisco webex、微软的teams还有谷歌的Meet等,那它们为什么没有快速增长,只有ZOOM快速增长了呢?因为ZOOM好用。我们这里拿出一个客户的评价,大家可以看看,他就是说:的确好用,它设计的功能不多不少,恰到好处。
今年,苹果的市值超过了2万亿美元,大家可以看到,之前苹果占的市场份额不到四分之一,但是它的利润最高的时候达到92%,所有这些都说明:质量是最好的品牌。
质量内建,这个道理大家都懂是不是?在坐的可能没有不懂的,但是大家在实践过程中,从需求开始可能就忘记了,不重视需求,甚至不知道需求是什么,有时候问工程师需求是什么?说,需求就是功能需求和非功能性需求,这个也没有错,对吧?但如果讲得彻底一点,功能或者非功能特性的要求是我们软件系统的解决方案。谈需求一定要从用户开始,你要知道我们解决了用户什么问题、用户是谁、不同的用户角色有什么不同的行为、有哪些应用场景,就像我们一直强调的,质量一定是面对客户或者相对客户而存在的,这个需求也是一样的。
需求是源头,设计是关键,之前RUP强调以架构设计为中心,今天的架构师在一个公司里地位还是挺高的,许多的程序员一生的职业目标可能是成为架构师。最近在翻译一本书righting software,在书中作者就特别强调:许多项目的失败都是因为没有良好的架构设计或没有良好的项目设计。这些都说明设计是非常重要的。但是现实中,设计没有得到足够重视,反而感受到:设计总是为功能而设计、或者考虑到性能,但是没有考虑到可靠性和可测试性,没有真正把质量构建在设计中,没有防御性设计。代码也是一样的,在大学里面也没有教过这个防御式编程,然后代码重构、代码整洁大家都做得不够好。
如果我们从需求开始,从设计开始就力求简单,然后把质量、可靠性或者弹性构建在系统之中,如果我们再进一步可以让系统的运行更好地自适应控制,或者我们有更好的智能反馈机制,那我们可以真正地构建一个反脆弱的系统。
除了刚才讲的质量带来效率,更准确地说,高质量就会带来高效率,我们还可以做很多的事情来提高效率,可以提升团队的能力、组织的数字化转型,我们可以构建全功能的特性团队,我们可以打造整个DevOps的工具链,可以将人工智能的技术引入到软件研发中,这些都可以提高我们的效能,并且不断地创新,不断地提升我们的效率。
我们刚才讨论的主题,都会在这次QECon的大会上有很好的分享或者有进一步的讨论。我们总共有15个分会场,加起来有65场主题演讲,我们这次是第一届,我们收到了80个议题,然后我们从中选择了60个议题,有5个议题是我们邀请的,希望第二届、第三届有更多的选择。
我们构建这个QECon的平台,是希望把质量和效能真正地融合起来,而不是隔离地去看质量和效能,这样才会给企业带来更大的价值。另一方面,我们构建QECon平台也是为了传递价值,让大家交流、分享,持续地提升企业的竞争力。QECon是我们一个梦想开始的地方,我们不忘感恩,感谢所有参会的嘉宾,让我们一起乘风破浪,进入一个新的时代。
在这里,也要感谢技术委员会各位老师的指导和支持,他们奠定了我们大会的基础。也感谢每一位演讲嘉宾、每一位讲师的辛勤和努力,他们会给我们带来无私和精彩的分享,
我们也感谢协作方、赞助商,感谢合作社区和媒体。